`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/10/04 21:54:47
// Design Name: 
// Module Name: tb_fifo
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module tb_fifo();

reg fifo_enable,
    fifo_push_request,
    fifo_pop_request,
    fifo_reset,
    fifo_data_in,
    clk;
reg [4:0] actual_width;
reg [9:0] actual_depth;
    
wire fifo_empty,
     fifo_full,
     fifo_data_out,
     fifo_error;    

parameter fifo_width=16;
parameter fifo_depth=2;

fifo#(
    .fifo_width(fifo_width),
    .fifo_depth(fifo_depth)
)fifo_m(
    .fifo_enable(fifo_enable),
    .fifo_push_request(fifo_push_request),
    .fifo_pop_request(fifo_pop_request),
    .fifo_reset(fifo_reset),
    .fifo_clk(clk),
    .fifo_data_in(fifo_data_in), 
    .fifo_empty(fifo_empty),  
    .fifo_full(fifo_full),         
    .fifo_data_out(fifo_data_out),
    .fifo_error(fifo_error),
    .actual_width(actual_width),
    .actual_depth(actual_depth)  
);    
   
initial begin
    fifo_enable=1;    
    fifo_push_request=0;
    fifo_pop_request=0; 
    fifo_reset=0;      
    clk=0;       
    fifo_data_in=1;
    actual_width=16;
    actual_depth=32;
    #50 fifo_reset=1;  
    #50 fifo_push_request=1;  
end

always #10 clk=~clk;
always #10 fifo_data_in=~fifo_data_in;
         

endmodule
